//
//  ProtocolCoding.swift
//  elarc01
//
//  Created by elarc on 16/8/16.
//  Copyright © 2016年 elarc. All rights reserved.
//

import Foundation
import UIKit

public protocol Then {}

extension Then where Self: AnyObject {
    public func then(@noescape block: Self -> Void) -> Self {
//使用@noescape解决Swift闭包“保留环”
        block(self)
        return self
    }
}

extension NSObject:Then{}

class ProtocolCoding: NSObject {
    
//    let titleLabel = UILabel().then {
//        $0.textColor = .redColor()
//        $0.textAlignment = .Center
//    }
    
    func logIfTrue(@autoclosure predicate: () -> Bool) {
        if predicate() {
            print("True")
        }
    }
    
    override init() {
       super.init()
        
//        @autoclosure 自动闭包 会把2 > 1 这个表达式自动转换为() -> Bool 
//        只有形如() -> T 的参数才能使用这个特性进行简化
       logIfTrue(2 > 1)
//      logIfTrue({2 > 1})
    }
    
}

